import subprocess
import time
from random import randint
from time import sleep

import psutil


def wait() -> None:
    """
    设置网络请求间隔时间，仅对获取数据生效，不影响下载文件
    """
    # 随机延时
    # sleep(randint(15, 45) * 0.1)
    # 固定延时
    # sleep(2)
    # 取消延时
    # pass


def failure_handling() -> bool:
    """批量下载账号作品模式 和 批量下载合集作品模式 获取数据失败时，是否继续执行"""
    # 询问用户
    return bool(input("输入任意字符继续处理账号/合集，直接回车停止处理账号/合集: "))
    # 继续执行
    # return True
    # 结束执行
    # return False


def illegal_nickname() -> str:
    """当 账号昵称/标识 或者 合集标题/标识 过滤非法字符后不是有效的文件夹名称时，如何处理异常"""
    # 询问用户
    return input("当前 账号昵称/标识 或者 合集标题/标识 不是有效的文件夹名称，请输入临时的账号标识或者合集标识：")
    # 使用当前时间戳作为账号昵称/标识或者合集标题/标识
    # 需要将第 5 行代码取消注释
    # return str(time())[:10]


def condition_filter(data: dict) -> bool:
    """
    自定义作品筛选规则，例如：筛选作品点赞数、作品类型、视频分辨率等
    需要排除的作品返回 False，否则返回 True
    """
    # if data["ratio"] in ("720p", "540p"):
    #     return False  # 过滤低分辨率的视频作品
    return True


# 进程检查
def get_process(pid):
    time.sleep(1)  # 添加延迟
    for process in psutil.process_iter(['pid', 'cmdline']):
        try:
            if process.pid == pid:
                print(process, 'process')
                return process
        except psutil.NoSuchProcess:
            pass
    print(f"Process with PID {pid} not found")
    return False


# 进程类型检查
def check_process_type(pid: int, process_type: str):
    process = get_process(pid)
    if not process:
        return False
    try:
        cmdline = process.cmdline()
        print(cmdline, 'cmdline')
        if any(process_type in arg.lower() for arg in cmdline):
            return True
    except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess) as e:
        pass
    return False
